import torch
from torchvision import transforms
from torchvision import datasets
from torch.utils.data import DataLoader
import torch.nn.functional as F
import torch.optim as optim

batch_size=60000 #这里是为了后面一次取出所有的数据
# transform=transforms.Compose([transforms.ToTensor(),
#                               transforms.Normalize((0.1307,),(0.3081,))])
transform=transforms.Compose([transforms.ToTensor()]) #不对数据进行标准化

#加载数据
train_dataset=datasets.MNIST(root='../mnist_data',train=True,download=False,
                             transform=transform)
train_loader=DataLoader(train_dataset,shuffle=True,batch_size=batch_size)
test_dataset=datasets.MNIST(root='../mnist_data',train=False,download=False,
                            transform=transform)
test_loader=DataLoader(test_dataset,shuffle=False,batch_size=batch_size)

#取出加载在DataLoader中的数据，因为batch_size就是训练集的样本数目，所以一次就取完了所有训练数据
for batch_idx, data in enumerate(train_loader, 0):
    inputs, targets = data #inpus为所有训练样本
    x=inputs.view(-1,28*28) #将（6000，1，28，28）大小的inputs转换为（60000，28*28）的张量
    x_std=x.std().item() #计算所有训练样本的标准差
    x_mean=x.mean().item() #计算所有训练样本的均值

print('均值mean为:'+str(x_mean))
print('标准差std为:'+str(x_std))
